<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>
<script>

  function delay(ms, desc) {
    return new Promise((resolve) => {
      setTimeout(() => {
        const num = Math.random()
        resolve(desc + num)
      }, ms)
    })
  }

  // async、await处理异步
  // 1. async 函数返回一个 promise 对象
  // 2. async 函数内部使用 await 时可以暂停执行函数，等待 await 后的 promise 状态改变后继续执行
  // 3. async 函数配合 await 使用可以让异步代码按照同步的顺序执行
  // 4. async 函数使用 try{} catch(e) {} 捕获报错和失败状态
  
  // async function start() {
  //   console.log('开始')
  //   const res1 = await delay(3000, '第一次')
  //   console.log(res1)
  //   const res2 = await delay(2000, '第二次')
  //   console.log(res2)
  //   const res3 = await delay(1000, '第三次')
  //   console.log(res3)
  //   return { res1, res2, res3 }
  // }

  // start()
  //   .then(res => {
  //     console.log(res)
  //   })


  async function fn2() {
    try {
      const res = await new Promise((resolve, reject) => {
        // resolve(111)
        reject(111)
      })
      console.log(res)
    } catch(e) {
      console.log(e)
    }
  }
  fn2()

  // console.log('end')



  // const start1 = async () => {
  // } 


  // function fn() {
  //   console.log(1)
  //   console.log(2)
  //   console.log(3)
  // }

  // fn()
  // console.log('结束')


</script>